package lib

import (
	"strings"
)

func init() {
	Probs = append(Probs, Problem{
		Num:         125,
		Discription: "验证回文串",
		Level:       1,
		Labels: map[string]int{
			"双指针滑动": 1,
		},
	})
}

func IsPalindrome2(s string) bool {
	left := 0
	right := len(s) - 1
	//先变成小写，方便判断
	s = strings.ToLower(s)
	for left < right {
		for left < right && !isValidCh(s[left]) {
			left++
		}

		for left < right && !isValidCh(s[right]) {
			right--
		}

		//去除无效字符后看看还需不需要比
		if left == right {
			break
		}

		if s[left] == s[right] {
			left++
			right--
		} else {
			return false
		}
	}

	return true
}

func isValidCh(ch byte) bool {
	if ch >= 'a' && ch <= 'z' {
		return true
	}

	if ch >= '0' && ch <= '9' {
		return true
	}

	return false
}
